/* 
 * Toutes les fonctions sur le choix formule
 */


$(function () {

    majAHeight();
    // border jaune de la formule choisie
    $('.lien_basique:not(.grise), .lien_dynamique:not(.grise), .lien_feerique:not(.grise)').click(function () {
        var cl = $(this).attr('class');
        var id = '#la_' + $(this).attr('class').substr(5);//console.log(id)
        if(cl.indexOf('grise') == '-1'){
			_currentFormuleId = 0 ;
            _currentFormuleId = $(this).prev().val();
            $('#la_basique, #la_dynamique, #la_feerique').css('border', 'none');
            $(id).css('border', '2px solid yellow');


            _id = $(this).attr('id');
            _prix = $(this).attr('prix');

            $('#choix-form').val(_id);
            $('#prix-form').val(_prix);
            $('#formule').val(_id);
            $('#RefPaiement').val();
            updateOption(_id);
        }return false;
    });
    
    // griser la formule inférieure à celle choisie
    $('.a_griser').each(function(){
		console.log('adada') ;
        if( $(this).val() == '1'){
            $(this).next('a').addClass('grise');
            $(this).next('a').next('div').css('opacity','0.5');
			$(this).next('p').next('div').css('opacity','0.5');
        } 
    });
    
    // bordure jaunce de la formule choisie
    $('.selectionne').each(function(){
        if( $(this).val() == '1'){
            $(this).next('.a_griser').next('a').next('div').css('border','2px solid yellow');
        } 
    });
	
    
	$('#valid-form').click(function(){
			
			getUrlRetour() ;
			paiement = $('#selectPaiement').val();
			if (verifierForm() && paiement != 1 ) {
				document.forms['form1'].submit();
			} else {
				if (!$('#montant').val())
				{
					miditra(0);
				}
				document.forms['form-cb'].submit();
			}
		   return false;
	 });

	 $

});

/*
 * Etablir la liste des options supp choisies
 */
function verifierForm() {
        var _collector = "";
        var k = 0;
        $('.select_choix').each(function () {
            var _currentVal = $(this).val();

            if (_currentVal != "")
            {
                var sep = (k>0)? ',' : '';
                _collector += sep + _currentVal;
                k++;
            }
        });
        $('#choix').val(_collector);
        return true;
}

/*mis à jour height <a> formule*/
    function majAHeight(){
        var length = $('#detailOption').height() ;
        $('a.lien_feerique,a.lien_dynamique,a.lien_basique').css('margin-top',length);
    }

/*
 * Mis à jour des options par rapport à celle choisie
 */
 function updateOption(idFormule){
    var url = $('#urlUpdate').val();
    
    /*
     *Requete ajax : recuperer l'objet result contenant les resultats:
     *  - options
     *  - paiement
     *  - recap formule
     */
    $.getJSON(url,{formuleId: idFormule,idOccasion: $('#idOccasion').val()}, function(result){
        var zoptions = '<tr><td>Nom</td><td>libellé</td><td>description</td><td>prix</td><td>durée</td><td>Action</td></tr>';
			zoptions+= '<tr><input type="hidden" id="packChose" value="0"></td></tr>';
		countPaiement = countOption = 0;
        size = result.listeLibOption.length;

        /*
        *  update des options
        */
        for (i = 0; i < size; i++)
		{
		
			countOption++;
			var tabChoix = result.listeChoix;
			var sizeChoix = tabChoix.length;
			for(j=0 ; j< sizeChoix ; j++)
			{
				if (result.listeLibOption[i] == tabChoix[j].lib_option_formule)
				{
					 zoptions += '<tr>' ;
					 zoptions += '<td><label>'+result.listeLibOption[i]+'</label></td>' ;
					 zoptions += '<td><label>'+tabChoix[j].formch_libelle+'</label></td>' ;
					 zoptions += '<td><label>'+tabChoix[j].formch_description+'</label></td>' ;
					 zoptions += '<td><label>'+tabChoix[j].formch_prix +'€ '+'</label></td>' ;
					 zoptions += '<td><label>'+tabChoix[j].formch_duree + 'j '+'</label></td>' ;
					 zoptions += '<td><input statut="0" type="checkbox" optionPrix ="'+tabChoix[j].formch_prix+'"  value="' + tabChoix[j].formch_id + '" id="parution_' + i +'"  class="select_choix"  onclick="miditra(this.value,'+tabChoix[j].formch_prix+',this);" ></td>' ;
					 zoptions += '</tr>' ;
				}
					
			}
        };
        /*
         * update type paiement
         */
        var zPaiement = '';
        var sizePaiement = result.listePaiement.length;
        for(j=0 ; j< sizePaiement ; j++){
			countPaiement++;
            zPaiement += '<option value="'+result.listePaiement[j].id+'">'+result.listePaiement[j].paiement+'</option>';
        }
        /*
         * update liste options à choisir
         */
        var zRecap = '<ul>';
        var sizePaiement = result.recapAnnonceFormule.length;
        for(j=0 ; j< sizePaiement ; j++){
            zRecap += '<li>'+result.recapAnnonceFormule[j].lib_option_formule+' : '+result.recapAnnonceFormule[j].formch_libelle+'</li>';
        }
        zRecap += '</ul>';
        
        // mis à jour des champs)
		if (countOption) {
	        $("#tableOptions").html(zoptions);
	        $("#options").show();

		} else {
			$("#tableOptions").html('');
	        $("#options").hide();
		}

		if (countPaiement) {
	        $("#selectPaiement").html(zPaiement);
			$("#typepayement").show();
			$("#reglement").hide();

		} else {
			$("#selectPaiement").html('');
			$("#typepayement").hide();
			$("#reglement").show();
		}

        $("#recapFormule").html(zRecap);
    });
}

/*
 * savoir si un élément appartient à un tableau
 */
function inArray(array, p_val) {
    var l = array.length;
    for(var i = 0; i < l; i++) {
        if(array[i] == p_val) {
            return true;
        }
    }
    return false;
}

function miditra (val,iPrix,oCurentChecked) {

	var iPrixFormule = 0;
	if( $('#prix-form').val() ) {
		iPrixFormule = $('#prix-form').val() ;
	}

	var iTotatalAPayeAvecPack = parseFloat(iPrixFormule);

	//On recupere le montant total
	var iTotalAPaye		  = 0 ;
	if($("#montant").val()!=0) {
		iTotalAPaye		  = $("#montant").val() ;
	}
	

	//On test si l'annonceur a choisi l'option pack (Ici 65  est l'identifiant du pack)
	if (val=='65')
	{
		$('#packChose').val('1');
	}
	
	
	if ($('#packChose').val() == "1") { // Si on a choisit le pack Montant à payer = prix du formule + 19.90 
			iMontant		= (iTotatalAPayeAvecPack + parseFloat(19.90)).toFixed(2);
			iTotalAPaye		=  parseFloat(iMontant)*100;
	} else {
			
			//On recupere le statut du checkbox
			var iStatut = oCurentChecked.checked ;
			//Collection des choix des options :Ceci est necessaire pour le payement
			//Ceux qui sont choisis ne peuvent pas apparaitre dans la liste des options
			var zCollectionsOptions =  $("#choix").val() ;
			var zSeparator			=  "" ;
			if (zCollectionsOptions)
			{
				 zSeparator			=  "," ;
			}
	
			if (iStatut==false)
			{
				iTotalAPaye			  = parseFloat(iTotalAPaye) - parseFloat(iPrix)*100;

				var iPostionChoixDansLaCollection = stripos(zCollectionsOptions,val) ;
			
				if(iPostionChoixDansLaCollection>0) {
					zCollectionsOptions	  = str_ireplace(","+val,'',zCollectionsOptions) ;
				}else if(iPostionChoixDansLaCollection==0) {
					zCollectionsOptions	  = str_ireplace(val,'',zCollectionsOptions) ;
				}	
				
			}else{
				iTotalAPaye			  = parseFloat(iTotalAPaye) + parseFloat(iPrix)*100;
				zCollectionsOptions	  = zCollectionsOptions + zSeparator + val ;
			}
			
			iMontant		= iTotalAPaye.toFixed(2);
			iTotalAPaye		= iMontant ;
	}

	iTarif			= parseFloat(iTotalAPaye).toFixed(2);
	iTarif			= parseFloat(iTarif);
	$('#tarif').val(iTarif);
	$('#montant').val(iTarif);

	if(zCollectionsOptions==",") {
		str_ireplace(",","",zCollectionsOptions) ;
	}
	
	
	$('#choix').val(zCollectionsOptions);
	getUrlRetour();
	
}

function miditra_old(val,iPrix,oCurentChecked) {

	_val = val;
	prixForm	=  $('#prix-form').val();
	totalIfPack = 0 ;
	if(prixForm)
	{
		totalIfPack = parseFloat(prixForm);
	}
	
	if (prixForm)
	{
	    total = parseFloat(prixForm);
	} else {
		total  = 0;
	}
	var k = 0;
    var _collector = "";

	if (_val)
	{


		// avoid multiple match with temp and _val
		$(".select_choix").each(function(){

			_cur = $(this);
			_valueSelected = _cur.val();
			if (_valueSelected == _val)
			{
				_cur.find('input[type="text"]').each(function(){
					$(this).removeAttr('temp');
				});
			}
            if (_valueSelected != "")
            {
                var sep = (k>0)? ',' : '';
                _collector += sep + _valueSelected;
                k++;
            }

		});
		
		 $(".select_choix").each(function()
	     {
			    
				if($(this).val() == _val || $(this).attr('temp') > 0) 
				{
						if ($(this).val() == "65") // on a choisit le pack, ne tenir en compte que la somme du prix de la formuel et du prix du pack
						{
							$('#packChose').val('1');
						}

					_prix_option = $(this).attr('optionPrix');
					if ($(this).attr('temp') > 0) {
						if (_val != "") {
						   total += parseFloat($(this).attr('temp'));               
						}
					} else {
						$(this).attr('temp', _prix_option);
						total += parseFloat(_prix_option) ;
					}
				}
		});



	}
	else
	{
		// removing temp
		 $(".select_choix inputinput[type='text']").each(function(){
			  $(this).removeAttr('temp');
		 });

		// removing item
		$(".select_choix").each(function(index){
			_current = $(this);
			_valueSelected = _current.val();
			if (_valueSelected)
			{
				// get the price
				_current.find('input[type="text"]').each(function(){
					if ($(this).val() == _valueSelected)
					{
						if ($(this).val() == "65") // on a choisit le pack, ne tenir en compte que la somme du prix de la formuel et du prix du pack
						{
							$('#packChose').val('1');
						}

						_prix_option = $(this).attr('optionPrix');
						$(this).attr('temp', _prix_option);
						total += parseFloat(_prix_option);

					}
				});
             var sep = (k>0)? ',' : '';
			_collector += sep + _valueSelected;
			 k++;

			}

		});

	}


	if(total)
    {
	
		total			= parseFloat(total);
		totalIfPack		= parseFloat(totalIfPack);
	
		if ($('#packChose').val() == "1") { // on a choisit le pack
			_montant	= (totalIfPack + parseFloat(19.90)).toFixed(2);
			total		= parseFloat(_montant)*100;
		} else {
			_montant	= (total.toFixed(2)) * 100;
			total		= _montant ;
		}
		
		total			= parseFloat(total);
		
		var iStatut = oCurentChecked.checked ;
		if (iStatut==false)
		{
			total = total - parseFloat(iPrix)*100;
		}
		alert(iStatut) ;
		alert(total) ;
		__tarif			= total.toFixed(2);
		__tarif			= parseFloat(__tarif);

		$('#tarif').val(__tarif);
		$('#montant').val(__tarif);
	} 

    $('#choix').val(_collector);
	getUrlRetour();

}


 // Fonction pour obtenir l'url lors de validation de paiement
function getUrlRetour(){
      var url	= $('#urlRetour').val();
	  $.getJSON(url,{formuleId: $('#choix-form').val(), choixSelected: $('#choix').val(), idOccasion: $('#annonceId').val(), choix: $('#choix').val()}, function(result){
          $('#effectue').val(result);
      });
	  
}

	
//Fonction equivalent de str_replace de php
function str_ireplace (search, replace, subject) {
  
    var i, k = '';
    var searchl = 0;    var reg;
 
    var escapeRegex = function (s) {
        return s.replace(/([\\\^\$*+\[\]?{}.=!:(|)])/g, '\\$1');
    }; 
    search += '';
    searchl = search.length;
    if (Object.prototype.toString.call(replace) !== '[object Array]') {
        replace = [replace];        if (Object.prototype.toString.call(search) === '[object Array]') {
            // If search is an array and replace is a string,
            // then this replacement string is used for every value of search
            while (searchl > replace.length) {
                replace[replace.length] = replace[0];            }
        }
    }
 
    if (Object.prototype.toString.call(search) !== '[object Array]') {        search = [search];
    }
    while (search.length > replace.length) {
        // If replace has fewer values than search,
        // then an empty string is used for the rest of replacement values        replace[replace.length] = '';
    }
 
    if (Object.prototype.toString.call(subject) === '[object Array]') {
        // If subject is an array, then the search and replace is performed        // with every entry of subject , and the return value is an array as well.
        for (k in subject) {
            if (subject.hasOwnProperty(k)) {
                subject[k] = str_ireplace(search, replace, subject[k]);
            }        }
        return subject;
    }
 
    searchl = search.length;    for (i = 0; i < searchl; i++) {
        reg = new RegExp(escapeRegex(search[i]), 'gi');
        subject = subject.replace(reg, replace[i]);
    }
     return subject;
}
//Fonction permettant de recuperer la position 
function stripos (f_haystack, f_needle, f_offset) {
    var haystack = (f_haystack + '').toLowerCase();    var needle = (f_needle + '').toLowerCase();
    var index = 0;
 
    if ((index = haystack.indexOf(needle, f_offset)) !== -1) {
        return index;    }
    return false;
}